function FieldData(data, _v, _t) {



    // 标识是否已获取过数据
    var isGet = true;
    // 支持自定义字段的名字
    var valueField = _v || 'value', textField = _t || 'text';
    // 数据，如果为字符串表示需要从后台获取的。
    var _data = data;
    if ('string' === typeof data) {
        isGet = false;
    }

    // 获取数据
    function get() {
        if (!isGet) {
            $.ajax(data, {
                dataType: 'json',
                type:'post',
                async: false,
                success: function(data) {
                    _data = data;
                    isGet = true;
                }
            });
        }
        return _data;
    }
    return {
        getData: function() {
            return get();
        },
        formatter: function(value, row, index) {
            var data = get();
            for (var i = 0, len = data.length; i < len; i++) {
                var item = data[i];
                if (item[valueField] == value) { return item[textField] }
            }
            return value;
        }
    };
}


$(function() {
    var
        // 表示当前正在编辑的行，本示例只允许编辑一行。
        editIndex,
        fieldGender = new FieldData('/api/fetchGender');




    var dg = $('table').datagrid({
        url: '/api/fetchUsers', rownumbers: true, singleSelect: true,
        toolbar: [
            {
                text: '保存', iconCls: 'icon-save', handler: function() {
                    if (editIndex) {
                        dg.datagrid('endEdit', editIndex); editIndex = undefined;
                    }
                }
            },
            {
                text: '取消', iconCls: 'icon-redo', handler: function() {
                    if (editIndex) {
                        dg.datagrid('cancelEdit', editIndex); editIndex = undefined;
                    }
                }
            }
        ],
        columns: [[
            { field: 'name', title: '姓名' },
            {
                field: 'gender', title: '性别', width: 60,
                editor: {
                    type: 'combobox',
                    options: {
                        data:fieldGender.getData()
                    }
                },
                formatter: fieldGender.formatter
            },
        ]],
        // 双击编辑当前行
        onDblClickRow: function(index, row) {
            //console.log(index,row);
            if (undefined === editIndex) {
                $(this).datagrid('beginEdit', index);
                editIndex = index;
            }
        }
    });
});